#ifndef __CHANNEL_HPP__   // 防止重复包含
#define __CHANNEL_HPP__

#include<iostream>
#include <unistd.h>
#include <string>

// 定义一个管道类  先描述
class Channel
{
    public:
        Channel(int wfd, pid_t who) : _wfd(wfd), _who(who) 
        {
            //Channel-3-1234
            //记录管道 通过3可以写到pid为1234的子进程中
            _name="Channel-"+std::to_string(wfd)+"-"+std::to_string(who);
        }
        void Send(int cmd)  //cmd 任务码
        {
            ::write(_wfd, &cmd, sizeof(cmd)); // 写入任务码
        }
        void close() 
        {
            ::close(_wfd);
        }
        std::string getName() const { return _name; }
        int getWfd() const { return _wfd; }
        pid_t getWho() const { return _who; }
        
        ~Channel() {}


    private:
   // 因为是进程池，我们管道只需要记录谁给的任务,即父进程的信息
        int _wfd; // 写端文件描述符 
        std::string _name; // 管道名字
        pid_t _who; // 读端子进程的pid
};






#endif // __CHANNEL_HPP__